/**
 * 杨辉三角形
 * https://www.lanqiao.cn/problems/1457/learning/?page=1&first_category_id=1&second_category_id=3&tag_relation=intersection&tags=2021,%E7%9C%81%E8%B5%9B&sort=pass_rate&asc=0
 */

import java.util.Scanner;

/**
 对于杨辉三角呢，它必然是一个左右对称的一个图形，因为是C！阶乘的，那么Ca b 和 Ca a-b 是相等的，那么要第一次出现的话，那么第一次出现指定出现在左面
 1
 1  2
 1  3
 1  4   6
 1  5   10
 1  6  15   20
 这个呢就是6行的一个杨辉三角，这时候进行斜着看，可以看到斜着的这条线上是递增的一个
 并且每一个斜线的第一个值，就是中心线，C2n n 的阶乘
 那么开始找输入的值的时候，那么从后面的斜行往前找，这里最大的只能到16，因为这个范围是10的9次方，那么C34 17 是大于10的9次方，所以因是C32 16
 从16开始进行遍历寻找，并且因为每一个斜行是一个递增的，那么进行二分，进行查找是否存在这个要查找的值，可以大大缩减时间
 这样之后时间复杂度为 16*logn
 */
public class Main17 {
    public static long n;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        n = scan.nextLong();
        for(int k = 16;k >= 0;k--) {
            // 这里的k 代表的是第几个斜行，从后面的斜行开始寻找
            if(check(k)) {
                break;
            }
        }
        scan.close();
    }

    // 判断第k斜行是否包含n 这个目标值
    public static boolean check(int k) {
        // 进行二分查找对应的斜行是否存在这个目标值
        long l = 2 * k;
        long r = Math.max(n,l); //当n为1的时候，进入不了循环，就会报错
        // 相当于查看是 Cn k 的阶乘
        while(l < r) {
            long mid = (l + r) / 2;
            if(C(mid,k) >= n) {
                // 就是相当于是Cmid k 的阶乘大于等于目标值，那么进行移动
                r = mid;
            }else {
                l = mid + 1;
            }
        }
        // 这时候判断 Cr k 的阶乘是否等于 n
        if(C(r,k) != n) {
            return false;
        }

        // 相等，直接打印
        // 需要计算当前 这个目标值的位置在哪里
        // 当前在第r行，前面就存在r个行，这个杨辉三角是从第一行开始是 1个 2行2个....n行就是n个值，就是一个递增的，公式为 r(r + 1) / 2，
        // 为当前行前面所有行的值的总数，之后计算当前行中n处于第几个位置，k这个数比正常从1开始数的值少一个，因为第一个值为Cr 0 的阶乘
        System.out.println((r * (r + 1)) / 2 + k + 1);
        return true;
    }

    // 计算对应的阶乘
    public static long C(long a,long b) {
        // 这就是计算 Ca b 的阶乘
        long ret = 1;
        for(long i = a,j = 1;j <= b;i--,j++) {
            ret = ret * i / j;
            if(ret > n) {
                return ret;
            }
        }
        return ret;
    }
}
